// 1.1 导入 fs 模块
const fs = require('fs')
// 1.2 导入 path 模块
const path = require('path')
// 1.3 定义正则表达式，分别匹配 <style></style> 和 <script></script> 标签
const regStyle = /<style>[\s\S]*<\/style>/
const regScript = /<script>[\s\S]*<\/script>/

// 2.1 调用 fs.readFile() 方法读取文件
fs.readFile(path.join(__dirname,'素材/index.html'),'utf8', (err,data)=>{
    // 2.2 读取 HTML 文件失败
    if (err){
        console.log('读取文件失败，',err)
        return
    }
    // 2.3 读取文件成功后，调用对应的三个方法，分别拆解出 css, js, html 文件
    resolveCSS(data)
    resolveJS(data)
    resolveHTML(data)
})

// 3.1 定义处理 css 样式的方法
function resolveCSS(htmlStr){
    // 3.2 使用正则提取需要的内容
    const r1 = regStyle.exec(htmlStr)
    const newCss = r1[0].replace('<style>', '').replace('</style>','')
    fs.writeFile(path.join(__dirname,'clock/index.css'),newCss,'utf8',err=>{
        if (err){
            console.log('写入css失败:',err)
            return
        }
        console.log('写入css成功')
    })
}

// 4.1 定义处理 js 脚本的方法
function resolveJS(htmlStr){
    // 4.2 通过正则，提取对应的 <script></script> 标签内容
    const r2 = regScript.exec(htmlStr)
    // 4.3 将提取出来的内容，做进一步的处理
    const newScript = r2[0].replace('<script>', '').replace('</script>', '')
    // 4.4 将处理的结果，写入到 clock 目录中的 index.js 文件里面
    fs.writeFile(path.join(__dirname,'clock/index.js'),newScript,'utf8',err=>{
        if (err){
            console.log('写入js失败:',err)
            return
        }
        console.log('写入js成功')
    })
}

// 5.1 定义处理 HTML 结构的方法
function resolveHTML(htmlStr){
    // 5.2 将字符串调用 replace 方法，把内嵌的 style 和 script 标签，替换为外联的 link 和 script 标签
    const newHtml = htmlStr.replace(regStyle,`<link rel="stylesheet" href="index.css"/>`).replace(regScript,`<script src="index.js"></script>`)
    // 5.3 写入 index.html 这个文件
    fs.writeFile(path.join(__dirname,'clock/index.html'),newHtml,'utf8',err => {
        if (err){
            console.log('写入html失败:',err)
            return
        }
        console.log('写入html成功')
    })
}
